<?php

/**
 * 草稿箱.
 *
 * @author jinlong.panjl <jinlong.panjl@aliyun-inc.com>
 * @copyright ©2003-2103 phpwind.com
 * @license http://www.phpwind.com
 *
 * @version $Id$
 */
class PwDraft
{
    /**
     * 添加.
     *
     * @param PwDraftDm $dm
     *
     * @return bool
     */
    public function addDraft(PwDraftDm $dm)
    {
        if (($result = $dm->beforeAdd()) instanceof PwError) {
            return $result;
        }

        return $this->_getDraftDao()->add($dm->getData());
    }

    /**
     * 删除一条
     *
     * @param int $id
     *
     * @return array
     */
    public function deleteDraft($id)
    {
        $id = intval($id);
        if ($id < 1) {
            return false;
        }

        return $this->_getDraftDao()->delete($id);
    }

    /**
     * 根据uid获取num条数据.
     *
     * @param int $uid
     * @param int $num
     *
     * @return array
     */
    public function getByUid($uid, $num = 10)
    {
        $uid = intval($uid);
        $num = intval($num);
        if ($uid < 1) {
            return array();
        }

        return $this->_getDraftDao()->getByUid($uid, $num);
    }

    /**
     * 根据用户统计草稿箱数量.
     *
     * @param int $uid
     *
     * @return array
     */
    public function countByUid($uid)
    {
        $uid = intval($uid);
        if ($uid < 1) {
            return 0;
        }

        return $this->_getDraftDao()->countByUid($uid);
    }

    /**
     * 获取一条数据.
     *
     * @param int $id
     *
     * @return array
     */
    public function getDraft($id)
    {
        $id = intval($id);
        if ($id < 1) {
            return array();
        }

        return $this->_getDraftDao()->get($id);
    }

    /**
     * 编辑.
     *
     * @param int   $id
     * @param array $data
     *
     * @return array
     */
    public function updateDraft($id, PwDraftDm $dm)
    {
        if (($result = $dm->beforeUpdate()) instanceof PwError) {
            return $result;
        }

        return $this->_getDraftDao()->update($id, $dm->getData());
    }

    /**
     * @return PwDraftDao
     */
    protected function _getDraftDao()
    {
        return Wekit::loadDao('draft.dao.PwDraftDao');
    }
}
